const http = require('http')
const path = require('path')
const fs = require('fs')
const mime = require('mime')

const server = http.createServer((req, res) => {
  let filePath = path.resolve(__dirname, path.join('www', req.url))

  if (fs.existsSync(filePath)) {      // 判断文件是否存在
    const stat = fs.statSync(filePath)  // 获取文件信息
    const isDir = stat.isDirectory()   // 判断是否为文件夹

    if (isDir) {
      filePath = path.join(filePath, 'index.html')  // 如果是文件夹，默认返回index.html
    }

    if (!isDir || fs.existsSync(filePath)) {   // 向前端返回文件
      // const content = fs.readFileSync(filePath)
      // const { ext } = path.parse(filePath)
      // res.writeHead(200, { 'Content-Type': mime.getType(ext) })
      // return res.end(content)
      const { ext } = path.parse(filePath)
      const timeStamp = req.headers['if-modified-since']

      let status = 200
      if (timeStamp && Number(timeStamp) === stat.mtimeMs) {
        status = 304
      }

      res.writeHead(status, {
        'Content-Type': mime.getType(ext),
        'cache-control': 'max-age=86400', // 强缓存一天
        'last-modified': stat.mtimeMs   // 最后修改的时间
      })

      if (status === 200) {
        const stream = fs.createReadStream(filePath)  // 创建可读流
        stream.pipe(res)  // 将可读流的数据，通过管道，输出到前端
      } else {
        return res.end()
      }
    }
  }


})

server.listen(3000)